<?php
header('Content-type:text/html;charset=utf8');
//1、磁盘大小
//-------------------------------------------------------------------------------->>>
// 显示的是当前目录所在的磁盘的总空间
echo disk_total_space('/').'<br/>';
// 显示的是指定的磁盘的空间大小
echo disk_total_space('f:').'<br/>';
// 当前所在目录磁盘空间的剩余空间
echo disk_free_space('/').'<br/>';

// 计算次方 比如 3 的 3次方  
// echo pow(3,3);
// echo pow(2,3);
// echo  pow(3,4);


//2、返回易识别的单位大小
//--------------------------------------------------------------------------------->>>
/**
 * 返回易识别的单位大小
 * @param  [type]  $size [description]
 * @param  integer $fix  [description]
 * @return [type]        [description]
 */
function getSize($size,$fix=2){

if($size>=pow(1024,3)){
		// 计算GB
		$T = $size/pow(1024,3);
		$U = 'GB';
	}else if($size>=pow(1024,2)){
		// 计算MB
		$T = $size/pow(1024, 2);
		$U = 'MB';
	}else if($size>=pow(1024,1)){
		// 计算KB
		$T = $size/pow(1024,1);
		$u = 'KB';
	}else{
		// 直接输出
		$T = $size;
		$U = 'B';
	}

	// 第一个参数$T 是要处理的值 第二个参数是 小数点后面留几位
	return round($T,$fix).$U;

}
	echo getSize(128025432064,5).'<br/>';



//3、获取文件名
//------------------------------------------------------------------------------->>>
// 设置一个文件  
$file = 'view/2.jpg';
// 获取文件名
echo basename($file); //获取到的文件名为：b.jpg
// echo basename($file);
// echo basename($file);
// echo basename($file);
// echo basename($file);

// 4、取目录
//-------------------------------------------------------------------------------->>>
echo dirname($file);//获取的目录为：view
// echo dirname($file);
// echo dirname($file);
// echo dirname($file);
// echo dirname($file);
// echo dirname($file);
// echo dirname($file);

//5、检测文件或目录是否存在
//-------------------------------------------------------------------------------->>>
var_dump(file_exists($file));//为真说明文件存在  为假说明文件不存在
// file_exists($file);
// file_exists($file);
// file_exists($file);
// file_exists($file);
// file_exists($file);
// file_exists($file);

// 只判断目录 不能判断带文件名的目录
is_dir('view/111') || mkdir('view/111',0755,true);
var_dump(file_exists('view11/2.jpg'));

//值判断文件目录 不判断文件
var_dump(is_dir('view/111'));


//5、创建文件
//-------------------------------------------------------------------------------->>>
// var_dump(mkdir('')); //如果一个参数 只创建一个当前目录下的文件  
//如果是三个参数  第一个参数是要创建的目录  第二个参数是文件的权限 第三个参数是true表示可以创建二级目录  如果是false表示不可以创建二级目录
// mkdir('a/b/c',0755,true);
// mkdir('');
// mkdir('');
// mkdir('');
// mkdir('');

//6、新建目录数组 然后按照数组里面的名字然后判断 如果没有文件夹 则创建

$dirs = array(

		'Application',
		'Application/Controllers',
		'Application/Modules',
		'Application/View'
	);

// 遍历文件目录
foreach ($dirs as $key ){
	// 判断给定的文件 是否为文件夹/目录 
	// 如果不是目录 那么则执行后面的创建一个文件夹 如果它是一个目录那么则返回什么都不做
	// // 结果为真时 不创建  结果为假时 创建文件
	is_dir($key) || mkdir($key,0755,true);//一个判断语句 不是或的语句

};
// 创建文件           
touch('Application/1.txt');
touch('Application/Controllers/2.txt');
touch('Application/Modules/3.txt');
touch('Application/View/4.txt');



$dirs = array(
		'a',
		'a/b',
		'a/b/c',
		'a/d'
	);

//遍历数组中的键值 然后按照键值创建文件夹/目录
foreach ($dirs as $value) {
	//创建完成后我们需要判断  如果之前的目录中存在了和要创建的文件夹一样的名字 那么就不创建 如果没有就要创建
	is_dir($value) ||  mkdir($value,0755,true);
}
touch('a/1.txt');
touch('a/b/2.txt');
touch('a/b/c/3.txt');
touch('a/d/4.txt');

//7、删除文件夹/目录
//---------------------------------------------------------------------->>>
// rmdir('a/d');
// rmdir('a/d');
// rmdir('a/d');
// rmdir('a/d');
// rmdir('a/d');
// rmdir('a/d');


//8、rename 重命名一个文件或一个目录/文件夹
//---------------------------------------------------------------------->>>
//第一个参数需要重命名的文件或文件夹  第二个参数用来重命名的文件或文件夹
rename('a/1.txt', 'a/re.txt');
// rename(oldname, newname);
// rename(oldname, newname);
// rename(oldname, newname);
// rename(oldname, newname);

// 9、复制文件
// --------------------------------------------------------------------->>>
// 将文件从 第一个参数的文件路径 拷贝到 第二个参数的文件路径 
copy('a/re.txt', 'a/b/c/re.txt');
// copy(source, dest);
// copy(source, dest);
// copy(source, dest);
// copy(source, dest);
// copy(source, dest);

// 10、glob 遍历目录内容  

$ver = glob('Application/*');
//遍历到所有的目录文件夹、文件名  打印出来的结果 只可以打印两层
print_r($ver);
echo '<hr/>';

// 11、unlink  删除文件
// unlink('a/b/c/re.txt');
// unlink(filename);
// unlink(filename);
// unlink(filename);
// unlink(filename);


// 12、遍历指定的文件夹 然后用表格的形式输出出来
// --------------------------------------------------------------------------->>>
$base = glob('a/*');
print_r($base);
// 新建表格
echo '<table border="1" width="200px">';
echo '<tr><td>类型</td><td>名称</td></tr>';
// 遍历到所有的目录文件夹、文件名
foreach ($base as $value) {
	// 判断给定的文件  如果遍历到的是目录/文件夹 
	// 把目录赋值给$type 放到类型里面 如果遍历到的是文件 把文件赋值给$type 放到类型里面
	$type = is_dir($value)?'目录':'文件';
	// 用表格的形式输出类型
	echo "<tr><td>{$type}</td><td>{$value}</td></tr>";
}
echo  '</table>';

//13、创建目录不适用第三个参数
//-----------------------------------------------
//给定一个目录结构然后 不使用第三个参数新建目录
$path = 'index/header/control/setting';
// 把里面的结构拆分出来
$dirs = explode('/',$path);
print_r($dirs);
// 设置一个空变量用来存放所拆分的文件
$d = '';
// 遍历所拆分出来的文件 然后创建目录
foreach ($dirs as $value) {
	// 把遍历出来的$value 存放到$d 里面
	// 后面加 '/'  因为文件的目录结构是以 / 来分隔的
	$d = $d.$value.'/';
	//第一次遍历：$d index/
	//第二次遍历：$d index header/
	//第三次遍历：$d index header control/
	//第四次遍历：$d index header control setting/
	//然后创建所存放的$d
	mkdir($d);
}
//----------------------------->>>


// 14、
